 
package bitclub;

/**
 *@author José Manuel Domínguez Carvajal
 * @fecha 13/09/2011
 * @version 1.0
 */

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import persistencia.PArticulo;

public abstract class Articulo {
    
    private int id;
    private String titulo;
    private String genero;
    private int ano;
    private int clasificacionEdad;
    private boolean activo;
    private Date fechaAlta;
    private Date fechaBaja;
    private Proveedor proveedor;
    private Tarifa tarifa;
    private int vecesAlquilada;
    private boolean disponible;

    public Articulo(int id, String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible) {
        this.id = id;
        this.titulo = titulo;
        this.genero = genero;
        this.ano = ano;
        this.clasificacionEdad = clasificacionEdad;
        this.activo = activo;
        this.fechaAlta = fechaAlta;
        this.fechaBaja = fechaBaja;
        this.proveedor = proveedor;
        this.tarifa = tarifa;
        this.vecesAlquilada = vecesAlquilada;
        this.disponible = disponible;
    }

    public Articulo(String titulo, String genero, int ano, int clasificacionEdad, boolean activo, Date fechaAlta, Date fechaBaja, Proveedor proveedor, Tarifa tarifa, int vecesAlquilada, boolean disponible) {
        this(-1,titulo,genero,ano,clasificacionEdad,activo,fechaAlta,fechaBaja,proveedor,tarifa,vecesAlquilada,disponible);
    }

    public Articulo() {
    }  
    
    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }
        
    public int getAno() {
        return ano;
    }

    public void setAno(int año) {
        this.ano = año;
    }

    public int getClasificacionEdad() {
        return clasificacionEdad;
    }

    public void setClasificacionEdad(int clasificacionEdad) {
        this.clasificacionEdad = clasificacionEdad;
    }

    public boolean isDisponible() {
        return disponible;
    }

    public void setDisponible(boolean disponible) {
        this.disponible = disponible;
    }

    public Date getFechaAlta() {
        return fechaAlta;
    }

    public void setFechaAlta(Date fechaAlta) {
        this.fechaAlta = fechaAlta;
    }

    public Date getFechaBaja() {
        return fechaBaja;
    }

    public void setFechaBaja(Date fechaBaja) {
        this.fechaBaja = fechaBaja;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Proveedor getProveedor() {
        return proveedor;
    }

    public void setProveedor(Proveedor proveedor) {
        this.proveedor = proveedor;
    }

    public Tarifa getTarifa() {
        return tarifa;
    }

    public void setTarifa(Tarifa tarifa) {
        this.tarifa = tarifa;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public int getVecesAlquilada() {
        return vecesAlquilada;
    }

    public void setVecesAlquilada(int vecesAlquilada) {
        this.vecesAlquilada = vecesAlquilada;
    }
    
    /**
     * Crea un nuevo registro en BD con el objeto Articulo que lo usa
     */
    public abstract void nuevo();
    
    /**
     * Actualiza los datos en la base de datos del objeto que lo usa
     */
    public abstract void actualizar();

    
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Articulo other = (Articulo) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 89 * hash + this.id;
        return hash;
    }
    
}
